﻿<?php
/**
 * Copyright 2013-present. ACTIA México.
 *
 * Archivo donde se encuentran servicios web auxiliares para los servicios web principales del proyecto
 * "Ubicación en tiempo real".
 * 
 */

require_once 'library.php';

function getCheckPoints($param = array()){
	
	if(!session_valid($param['token']))
		return error('Tu sesi&oacute;n expir&oacute;.');
	
	$msconnect = connectSigmaActia();
	
	if($msconnect["state"]=="false")
		return error($msconnect["reason"],mssql_get_last_message());

	
	$msquery="	SELECT	t_Paradas.parada AS Checkpt,
						t_Paradas.latitud AS lat,
						t_Paradas.longitud AS long
				FROM	t_Paradas";

	$msresults= mssql_query($msquery);
	
	if (!$msresults)
		return error('Consulta no v&aacute;lida',mssql_get_last_message());
	
	$if_datos = false;
	$checkpoints = array();
	while($row = mssql_fetch_array($msresults)){
		$if_datos = true;
		
		array_push($checkpoints,array("checkpoint"=>$row['Checkpt'],"latitud"=>$row['lat'],"longitud"=>$row['long']));
	}
	
	if(!$if_datos)
		return error('No se obtuvieron resultados','La consulta no obtuvo resultados');
	
	disconnectSigmaActia($msconnect);
	
	header('Access-Control-Allow-Origin: *');
	return json_encode(array("state"=>"true","checkpoints"=>$checkpoints));
}

function getLines($param = array()){
	
	if(!session_valid($param['token']))
		return error('Tu sesi&oacute;n expir&oacute;.');
	
	$msconnect = connectSigmaActia();
	
	if($msconnect["state"]=="false")
		return error($msconnect["reason"],mssql_get_last_message());
	
	$msquery = "SELECT	IdCliente, Nombre
				FROM	t_ClientesACF";

	$msresults= mssql_query($msquery);
	
	if (!$msresults)
		return error('Consulta no v&aacute;lida',mssql_get_last_message());

	$if_datos = false;
	$lines = array();
	while($row = mssql_fetch_array($msresults)){
		$if_datos = true;
	
		array_push($lines,array("id_cliente"=>$row['IdCliente'], "nombre"=>$row['Nombre']));
	}
	
	if(!$if_datos)
		return error('No se obtuvieron resultados','La consulta no obtuvo resultados');
	
	disconnectSigmaActia($msconnect);
	
	header('Access-Control-Allow-Origin: *');
	return json_encode(array("state"=>"true", "lineas"=>$lines));
}

function getRoutes($param = array()){
	
	if(!session_valid($param['token']))
		return error('Tu sesi&oacute;n expir&oacute;.');
	
	if(!isset($param['id_lines']))
		return error('Par&aacute;metros inv&aacute;lidos');

	$id_lines = substr($param['id_lines'], 0,-1);
	
	$msconnect = connectSigmaActia();
	
	if($msconnect["state"]=="false")
		return error($msconnect["reason"],mssql_get_last_message());
	

	$msquery = "SELECT 	distinct t_Roles.ID_Rol AS id_rol,
						t_Roles.des_rol AS descripcion
	
				FROM    	t_Unidades
				INNER JOIN t_ClientesACF ON t_Unidades.IdCliente = t_ClientesACF.IdCliente
				INNER JOIN t_Roles ON t_Unidades.IdRol = t_Roles.ID_rol
                
				WHERE	t_ClientesACF.idCliente IN (".$id_lines.")
				
				GROUP BY t_Roles.ID_rol, t_Roles.des_rol";
	
	$msresults= mssql_query($msquery);
	
	if (!$msresults)
		return error('Consulta no v&aacute;lida',mssql_get_last_message());
	
	$if_datos = false;
	$routes = array();
	while($row = mssql_fetch_array($msresults)){
		$if_datos = true;
		
		array_push($routes,array("id_rol"		=>$row['id_rol'],
								 "descripcion"	=>$row['descripcion']));
	}
	if(!$if_datos)
		return error('No se obtuvieron resultados','La consulta no obtuvo resultados');
	
	disconnectSigmaActia($msconnect);
	
	header('Access-Control-Allow-Origin: *');
	return json_encode(array("state"=>"true", "resultado"=>$routes));
}

function getUnits($param = array()){
	
	if(!session_valid($param['token']))
		return error('Tu sesi&oacute;n expir&oacute;.');
	
	if(!isset($param['id_lines']) || !isset($param['id_routes']))
		return error('Par&aacute;metros inv&aacute;lidos');
	
	$id_lines = substr($param['id_lines'], 0,-1);
	$id_routes = substr($param['id_routes'], 0,-1);
	
	$msconnect = connectSigmaActia();
	
	if($msconnect["state"]=="false")
		return error($msconnect["reason"],mssql_get_last_message());
	
	
	$msquery = "SELECT 	t_Unidades.IdUnidad AS id_unidad,
						t_Unidades.descripcion AS Nombre
	
				FROM     	t_Unidades
				INNER JOIN	t_ClientesACF ON t_Unidades.IdCliente = t_ClientesACF.IdCliente
				INNER JOIN	t_Roles ON t_Unidades.IdRol = t_Roles.ID_Rol
				
				WHERE	t_ClientesACF.idCliente IN (".$id_lines.")
				AND 	t_Unidades.IdRol IN (".$id_routes.")";

	$msresults= mssql_query($msquery);
	
	if (!$msresults)
		return error('Consulta no v&aacute;lida',mssql_get_last_message());

	$if_datos = false;
	$units = array();
	while($row = mssql_fetch_array($msresults)){
		$if_datos=true;
		array_push($units,array("id_unidad"	=>$row["id_unidad"],
								"nombre"	=>$row["Nombre"]));
	}
	
	if(!$if_datos)
		return error('No se obtuvieron resultados','La consulta no obtuvo resultados');
	
	disconnectSigmaActia($msconnect);
	
	header('Access-Control-Allow-Origin: *');
	return json_encode(array("state"=>"true","resultado"=>$units));
}

function login($person = array()){
	
	$user=mysql_real_escape_string($person['user']);
	$pass=mysql_real_escape_string($person['password']);
	
	if( !isset($user) || !isset($pass) )
		return error('Par&aacute;metros inv&aacute;lidos');
	
	$msconnect = connectSigmaActia();
	
	if($msconnect["state"]=="false")
		return error($msconnect["reason"],mssql_get_last_message());
	
	$msquery = 	"SELECT	t_UsuariosACF.Usuario AS username,
						t_UsuariosACF.TipoUsuario AS rol,
						t_ClientesACF.Nombre AS nombre,
						t_UsuariosACF.IdCliente AS id_usuario,
						t_ClientesACF.idCliente AS id_linea
						
				FROM    	t_UsuariosACF
				INNER JOIN	t_ClientesACF ON t_UsuariosACF.IdCliente = t_ClientesACF.IdCliente
				
				WHERE	(t_UsuariosACF.Usuario = '$user')
				AND		(t_UsuariosACF.Contrasenia = '$pass')";
			
	$msresults= mssql_query($msquery);
	
	if (!$msresults)
		return error('Consulta no v&aacute;lida',mssql_get_last_message());
	
	$if_datos = false;
	while($row = mssql_fetch_array($msresults)){
		$if_datos=true;
		$username = $row["username"];
		$rol=$row["rol"];
		$user_bd=$row["nombre"];
		$id_user=$row["id_usuario"];
		$id_linea=$row["id_linea"];
	}
	
	if(!$if_datos)
		return error('No se obtuvieron resultados','La consulta no obtuvo resultados');
		
	sessionStart($id_user,$user_bd,$rol,$id_linea);
	
	disconnectSigmaActia($msconnect);
	
	header('Access-Control-Allow-Origin: *');
	return json_encode(array("state"	=>"true",
							 "id_usuario"=>$id_user,
							 "user"		=>$user_bd,
							 "rol"		=>$rol,
							 "id_linea"	=>$id_linea,
							 "username"	=>$username));
}

function main($args = array()){
	
	if(!isset($args['func']) || !function_exists($args['func']))
		return error('Funci&oacute;n inv&aacute;lida');
	
	return $args['func']($args);
}

echo main($_REQUEST);

?>
